Smart user-customized graphical keyboard

ABSTRACT

A computing device automatically customizes attributes of a graphical keyboard based on user inputs to the graphical keyboard. For example, the computing device can display a first graphical keyboard arrangement that includes a first representation of a key associated with a target region of an input-sensitive display. The computing device receives a plurality of user inputs, each associated with a respective touch region of the input-sensitive display. Subsequent to determining that one or more of the touch regions is not substantially aligned with the target region, the computing device displays a second graphical keyboard arrangement that includes a second representation of the key, wherein at least one attribute of the second representation of the key is graphically modified relative to the first representation of the key so as to substantially align one or more of the touch regions with a target region associated with the second representation of the key.

TECHNICAL FIELD

The disclosure relates to graphical keyboards provided by computingdevices.

BACKGROUND

A user may interact with applications that are executing on a computingdevice (e.g., a mobile phone, tablet computer, smart phone, desktopcomputer, or the like). In some examples, a computing device may includea touch-sensitive display that may enable a user to interact with thecomputing device. For instance, an application executing on a computingdevice may cause a touch-sensitive display to display a graphicalkeyboard that may enable a user to register key presses by touchingcertain areas of the graphical keyboard.

Individual users of graphical keyboards may have varying typing styles.The graphical keyboard may be smaller in size than a physical keyboardto which a user may be accustomed. In some cases, an individual user maymake generally consistent errors when typing on a graphical keyboard.For example, the actual key on the graphical keyboard that is touched bythe user may be different from an intended target key.

SUMMARY

In one aspect, a method includes outputting, at an input-sensitivedisplay of a computing device, a first graphical keyboard arrangementincluding a first representation of a key that is associated with atarget region of the input-sensitive display, and receiving a pluralityof user inputs at the input-sensitive display, each user input from theplurality of user inputs being associated with a respective touch regionof the input-sensitive display. The method also includes, responsive todetermining that each input from the plurality of user inputs isassociated with the first representation of the key, determining whetherone or more of the associated touch regions is not substantially alignedwith the target region associated with the first representation of thekey. The method also includes identifying a quantity of the touchregions that are not substantially aligned with the target region, and,subsequent to determining that the quantity exceeds a threshold quantityof touch regions that are not substantially aligned with the targetregion, outputting, at the input-sensitive display, a second graphicalkeyboard arrangement that includes a second representation of the key,wherein at least one attribute of the second representation of the keyis graphically modified relative to the first representation of the keyso as to substantially align one or more of the touch regions with atarget region associated with the second representation of the key.

In another aspect, a system includes at least one processor, a keyboardapplication operable by the at least one processor to generate graphicalkeyboard arrangements, and an input-sensitive display that outputs afirst graphical keyboard arrangement including a first representation ofa key that is associated with a target region of the input-sensitivedisplay. The input-sensitive display is configured to receive aplurality of user inputs each associated with a respective touch regionof the input-sensitive display, wherein the plurality of user inputs arereceived during use by a user of an application executing on the systemother than the keyboard application, and the keyboard application,responsive to determining that each input from the plurality of userinputs is associated with the first representation of the key,determines whether one or more of the associated touch regions is notsubstantially aligned with the target region associated with the firstrepresentation of the key. The input-sensitive display outputs a secondgraphical keyboard arrangement that includes a second representation ofthe key, wherein at least one attribute of the second representation ofthe key is graphically modified relative to the first representation ofthe key so as to substantially align one or more of the touch regionswith a target region associated with the second representation of thekey.

In another aspect, a computer-readable storage medium comprisinginstructions that, if executed by one or more processors of a computingsystem, cause the computing system to perform operations comprisingoutputting a first graphical keyboard arrangement for display, the firstgraphical keyboard arrangement including a first representation of a keythat is associated with a target region of an input-sensitive display,receiving data indicative of a plurality of user inputs, each user inputfrom the plurality of user inputs being associated with a respectivetouch region of the input-sensitive display, and responsive todetermining that each input from the plurality of user inputs isassociated with the first representation of the key, determining whetherone or more of the associated touch regions is not substantially alignedwith the target region associated with the first representation of thekey. The operations also include, subsequent to determining that one ormore of the touch regions is not substantially aligned with the targetregion associated with the first representation of the key, outputtingfor display a second graphical keyboard arrangement that includes asecond representation of the key, wherein at least one attribute of thesecond representation of the key is graphically modified relative to thefirst representation of the key so as to substantially align one or moreof the touch regions with a target region associated with the secondrepresentation of the key.

The details of one or more examples are set forth in the accompanyingdrawings and the description below. Other features, objects, andadvantages will be apparent from the description and drawings, and fromthe claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a conceptual diagram illustrating an example of a computingdevice that is configured to execute a keyboard application.

FIG. 2 is a block diagram illustrating further details of one example ofthe computing device shown in FIG. 1.

FIG. 3 is a conceptual diagram illustrating an example of a keyboardapplication.

FIGS. 4A-4D are block diagrams illustrating example portions of agraphical keyboard.

FIG. 5 is a conceptual diagram illustrating an example distribution ofuser inputs associated with a representation of a key on a graphicalkeyboard.

FIG. 6 is a flow diagram illustrating an example operation of acomputing device that is configured to execute a keyboard application.

DETAILED DESCRIPTION

In general, the disclosure is directed to customizing attributes of agraphical keyboard on a computing device. For example, a computingdevice can execute or otherwise implement a keyboard application thatautomatically customizes an arrangement of a graphical keyboard based ondata collected from a user's use of the graphical keyboard, and presentsthe customized graphical keyboard to the user. The graphical keyboardmay, for example, be presented on an input-sensitive display of thecomputing device.

In an example aspect, the keyboard application may present a trainingprogram to the user for customizing the graphical keyboard. For example,the training program may be presented to the user upon initial use of adefault graphical keyboard of the computing device. According to oneexample aspect, the training program may present a sample training textto the user by a display, and the user may be instructed to type thetraining text using the default graphical keyboard. The keyboardapplication may record instances of mistyping by the user that occurwhen the user types the training text. The keyboard application may beconfigured to disregard other types of mistakes, such as misspelledwords or displacement of fingers on the keys, which do not result frommisdirected key presses.

In another example aspect, in addition to or instead of the trainingprogram mode, the keyboard application may operate in a continuouskeyboard learning mode. In the continuous keyboard learning mode, thekeyboard application executes in the background while the user is usingthe computing device, and gathers data based on the user's typingassociated with other applications of the computing device.

In some aspects, for each key represented on the graphical keyboard, thekeyboard application may log the exact locations that the user inputs tothe input-sensitive surface, and over time develop a distribution of thelocations of touches within an area associated with each key. In someexamples, the keyboard application automatically customizes thegraphical keyboard based on the data collected from a user's use of thegraphical keyboard, and presents the customized the graphical keyboardto the user. The keyboard application may compare the touch regions to atarget region, and modify the graphical keyboard (or proposemodifications to the user) when, for example, a position associated witha maximum quantity of touches is located outside of an inner touchregion for the key, and the quantity of touches exceeds a thresholdvalue. The keyboard application may, for example, modify the shape,size, and relative position of keys on the graphical keyboard.

Customizing the graphical keyboard to the typing habits of an individualuser in this manner may help to improve the quality of the user'sexperience when using the graphical keyboard, such as by reducing anamount of errors and corrections made by the user. The keyboardapplication may associate the customized graphical keyboard layout witha user login, allowing multiple users of the computing device to eachhave a different customized graphical keyboard.

FIG. 1 is a conceptual diagram illustrating an example of a computingdevice that is configured to execute a keyboard application. Asillustrated in FIG. 1, computing device 2 can include input device 4 andoutput device 6. Computing device 2 may be configured to executekeyboard application 8, which may cause output device 6 to displaygraphical keyboard 10. Keyboard application 8 may be operable by atleast one processor of a computing system including computing device 2to generate graphical keyboard arrangements. Examples of computingdevice 2 can include, but are not limited to, portable or mobile devicessuch as cellular phones, tablet computers, personal digital assistance(PDAs), portable gaming devices, portable media players, and e-bookreaders, as well as non-portable devices such as desktop computers.

Input device 4, in some examples, is configured to receive input from auser through tactile, audio, or video feedback. Examples of input device4 can include an input-sensitive display, such as a touch-sensitiveand/or a presence-sensitive screen, mouse, keyboard, voice responsivesystem, or any other type of device for detecting a command from a user.In some examples, input device 4 can include a touch-sensitive display,mouse, keyboard, microphone, or video camera.

Output device 6, in certain examples, may be configured to provideoutput to a user using tactile, audio, or video stimuli. Output device6, in one example, includes an input-sensitive display (e.g.,touch-sensitive display or presence-sensitive display), a sound card, avideo graphics adapter card, or any other type of device for convertinga signal into an appropriate form understandable to humans or machines.Additional examples of output device 6 can include a speaker, a cathoderay tube (CRT) monitor, a liquid crystal display (LCD), an organic lightemitting diode (OLED), or any other type of device that can generateintelligible output to a user. Output device 6 may present the contentof computing device 2 to a user. For example, output device 6 maypresent a web browser, or other output that may need to be presented toa user. In some examples, output device 6 may be a touch screen that canallow a user to provide one or more user inputs to interact withcomputing device 2.

Keyboard application 8, executing on computing device 2, may provide oneor more signals to cause output device 6 (e.g., a touch-sensitivedisplay) to display graphical keyboard 10. In some examples, a user mayprovide a user input to cause computing device 2 to select one or morecharacter keys of graphical keyboard 10 by touching the area of outputdevice 6 that displays the character key of graphical keyboard 10. Forinstance, a user may perform a tap gesture at a displayed character keyof graphical keyboard 10, such as character key 9. The tap gesture caninclude touching a displayed character key and releasing the characterkey.

In some examples, as when output device 6 includes a presence-sensitivedisplay, touching output device 6 may be accomplished by bringing aninput device such as a finger, a stylus, a pen, and the like, withinproximity of output device that is sufficiently close to enable outputdevice 6 to detect the presence of the input device. As such, touching adisplayed character key of graphical keyboard 10 may, in some examples,not include actual physical contact between an input device andgraphical keyboard 10. Similarly, in certain examples, as when outputdevice 6 includes a presence-sensitive display, releasing a displayedcharacter key of graphical keyboard 10 may be accomplished by removingthe input device from the detectable range of output device 6.

In an example aspect, keyboard application 8 may present a trainingprogram to the user for customizing graphical keyboard 10. For example,the training program may be presented to the user upon initial use of adefault graphical keyboard of the computing device 2. According to oneexample aspect, the training program may present a sample training textto the user by a display (e.g., presented by output device 6), and theuser may be prompted to type a predefined series of characters using thedefault graphical keyboard arrangement. The sample training textpresented by the training program of keyboard application 8 can includea variety of characters, and may be selected such that each characterappears multiple times and such that the order of the characters varies.

Keyboard application 8 may record instances of mistyping by the userthat occur when the user types the training text. For example, keyboardapplication 8 may register key presses on the touch-sensitive display,and determine when a touch region associated with the key presses is notsubstantially aligned with a target region of the touch-sensitivedisplay associated with a target key. Keyboard application 8 maydetermine what target region for a key the user input is associated withbased on comparison of an order of the user inputs with an order of thepredefined series of characters presented by the training program.Keyboard application 8 may determine whether certain mistakes are due tothe user missing an intended target key and pressing a nearby area ofgraphical keyboard 10 instead. Keyboard application 8 may be configuredto disregard other types of mistakes, such as misspelled words, that donot result from misdirected key presses.

In some aspects, for each key represented on graphical keyboard 10,keyboard application 8 may record the exact locations that the usertouches on the touch-sensitive surface, and over time develop adistribution of the locations of touches within an area associated witheach key. In one example aspect, when a maximum point of the locationdistribution is located outside of a particular inner region associatedwith a key, and the value of the maximum point is greater than athreshold, keyboard application 8 may propose to move a boundary of thekey to better align with a location of the maximum point, i.e., wherethe user actually presses the key. For example, keyboard application 8may move the key boundary for a given key when the maximum point of thelocation distribution exceeds the threshold and is located at least acertain distance away from a current center area associated with thekey. Keyboard application 8 may, for example, modify attributes ofgraphical keyboard 10, such as the shape, size, and relative position ofkeys on graphical keyboard 10.

In another example aspect, in addition to or instead of the trainingprogram mode, keyboard application 8 may operate in a continuouskeyboard learning mode. In the continuous keyboard learning mode,keyboard application 8 executes in the background while the user isusing computing device 2, and gathers data based on the user's typingassociated with other applications (not shown) of computing device 2.Keyboard application 8 may gather key touch location distribution data,as described above. As another example, keyboard application 8 may learnwhere the user may makes typing mistakes, such as based on instances inwhich the user goes back and corrects their typing.

Keyboard application 8 may, for example, occasionally present a displayto the user that shows a new proposed graphical keyboard layout,allowing the user to elect to use the new graphical keyboard layout orstay with the current layout. Keyboard application 8 can output aprevious graphical keyboard arrangement and the new graphical keyboardat the same time, so that the user can see the proposed changes andselect the desired arrangement. Keyboard application 8 can solicit auser selection of one of the first graphical keyboard arrangement andthe second graphical keyboard for future use. The new graphical keyboardarrangement may have a different overall size and shape than the firstgraphical keyboard arrangement, where the overall size and shape of thesecond graphical keyboard arrangement is selected by keyboardapplication 8 so as to substantially align one or more of the touchregions with a target region associated with a second representation ofa key. Keyboard application 8 may also provide the user the option toaccept, reject, or modify the key layout changes on a key-by-key basis,such as by soliciting a user selection of one or more modifications ofattributes of one or more representations of keys of the first graphicalkeyboard arrangement for future use. For example, the user can be givenoptions to modify the proposed layout by moving a key or by resizing thekeyboard. In some examples, keyboard application 8 may automaticallychange the layout of graphical keyboard 10 without requesting userapproval. In this manner, techniques of this disclosure may enable thecomputing device to provide the user with a customized graphicalkeyboard that is tailored to the particular typing style of the user.

Keyboard application 8 may associate the customized graphical keyboardlayout with a user login, allowing multiple users of the computingdevice to each use a different customized graphical keyboard. The usermay be able to turn off the continuous keyboard learning mode, such asby selecting an option indicated on the display to cease execution ofthe keyboard customization application as a background task. Keyboardapplication 8 may be, for example, a downloadable or pre-installedapplication executing on computing device 2. In another example,keyboard application 8 may be part of a hardware unit of computingdevice.

FIG. 2 is a block diagram illustrating further details of one example ofthe computing device shown in FIG. 1. FIG. 2 illustrates only oneparticular example of computing device 2, and many other exampleembodiments of computing device 2 may be used in other instances. Asshown in the specific example of FIG. 2, computing device 2 includesinput device 4, output device 6, one or more applications 19, one ormore processors 20, one or more storage devices 26, and networkinterface 24. Computing device 2 also includes operating system 16,which may include modules that are executable by computing device 2.Computing device 2, in one example, further includes keyboardapplication 8 that is also executable by computing device 2. Keyboardapplication 8 includes gesture determination module 12, training module14, and keyboard customization module 18. Each of components 4, 6, 8,12, 14, 18, 20, 24, and 26 may be interconnected (physically,communicatively, and/or operatively) for inter-component communications.In some examples, communication channels 22 may include a system bus,network connection, interprocess communication data structure, or anyother channel for communicating data. As one example in FIG. 2,components 4, 6, 20, 24 and 26 may be coupled by one or morecommunication channels 22.

Computing device 2 can include additional components that, for clarity,are not shown in FIG. 2. For example, computing device 2 can include abattery to provide power to the components of computing device 2.Similarly, the components of computing device 2 shown in FIG. 2 may notbe necessary in every example of computing device 2. For instancecomputing device 2 may not, in all examples, include network interface24.

Although shown as separate components in FIG. 2, in some examples, oneor more of keyboard application 8, gesture determination module 12,training module 14, and keyboard customization module 18 may be part ofthe same module. In some examples, one or more of keyboard application8, gesture determination module 12, training module 14, and keyboardcustomization module 18, and one or more processors 20 may be formed ina common hardware unit. In certain examples, one or more of keyboardapplication 8, gesture determination module 12, training module 14, andkeyboard customization module 18 may be software and/or firmware unitsthat are executed on or operable by one or more processors 20.

One or more processors 20 may include, in certain examples, any one ormore of a microprocessor, a controller, a digital signal processor(DSP), an application specific integrated circuit (ASIC), afield-programmable gate array (FPGA), or equivalent discrete orintegrated logic circuitry. One or more processors 20 may be configuredto implement functionality and/or process instructions for executionwithin computing device 2. For example, one or more processors 20 may becapable of processing instructions stored in one or more storage devices26.

One or more storage devices 26, in one example, are configured to storeinformation within computing device 2 during operation. Storage device26, in some examples, is described as a computer-readable storagemedium. In some examples, storage device 46 is a temporary memory,meaning that a primary purpose of storage device 46 is not long-termstorage. Storage device 46, in some examples, is described as a volatilememory, meaning that storage device 46 does not maintain stored contentswhen the computer is turned off. Examples of volatile memories includerandom access memories (RAM), dynamic random access memories (DRAM),static random access memories (SRAM), and other forms of volatilememories known in the art. In some examples, storage device 46 is usedto store program instructions for execution by one or more processors20. Storage device 26, in one example, is used by software orapplications running on computing device 2 (e.g., keyboard application8) to temporarily store information during program execution.

One or more storage devices 26, in some examples, also include one ormore computer-readable storage media. One or more storage devices 26 maybe configured to store larger amounts of information than volatilememory. One or more storage devices 26 may further be configured forlong-term storage of information. In some examples, one or more storagedevices 26 include non-volatile storage elements. Examples of suchnon-volatile storage elements include magnetic hard discs, opticaldiscs, floppy discs, flash memories, or forms of electricallyprogrammable memories (EPROM) or electrically erasable and programmable(EEPROM) memories.

As shown in FIG. 2, storage devices 26 include user settings 28,training programs 30, key regions 32, thresholds 34, and touch data 36.User settings 28, training programs 30, key regions 32, thresholds 34,and touch data 36 may each be configured as a database, flat file,table, tree, or other data structure stored within storage devices 26 ofcomputing device 2. In some examples, user settings 28, trainingprograms 30, key regions 32, thresholds 34, and touch data 36 may beconfigured as separate data repositories while, in other examples, theymay be a part of a single data repository.

In the example of FIG. 2, computing device 2 includes network interface24. Computing device 2, in one example, uses network interface 24 tocommunicate with external devices via one or more networks, such as oneor more wireless networks. Network interface 24 may be a networkinterface card, such as an Ethernet card, an optical transceiver, aradio frequency transceiver, or any other type of device that can sendand receive information. Other examples of such network interfaces mayinclude Bluetooth, 3G and WiFi radios in mobile computing devices aswell as USB. In some examples, computing device 2 uses network interface24 to wirelessly communicate with an external device (not shown) such asa server, mobile phone, or other networked computing device.

Computing device 2 may include operating system 16. Operating system 16,in some examples, controls the operation of components of computingdevice 2. For example, operating system 16, in one example, facilitatesthe interaction of keyboard application 8 with processors 20, networkinterface 24, storage device 26, input device 4, and output 6.

Computing device 2 includes keyboard application 8, executable bycomputing device 2, such as by one or more processors 20. As shown inFIG. 2, keyboard application 8 may include gesture determination module12, training module 14, and keyboard customization module 18.Applications 19, which include keyboard application 8, may each includeprogram instructions and/or data that are executable by computing device2. For example, gesture determination module 12, training module 14, andkeyboard customization module 18 may include instructions that causekeyboard application 8 executing on computing device 2 to perform one ormore of the operations and actions described in the present disclosure.Gesture determination module 12 may receive one or more inputs, such asfrom input device 4 or output device 6 (e.g., a touch sensitivedisplay), and may determine that the one or more inputs comprise agesture. Examples of gestures can include, but are not limited to, tapgestures, sliding gestures, circular gestures, and the like.

As one example, keyboard application 8, executing on one or moreprocessors 20, may cause a touch-sensitive display of computing device2, such as output device 6, to display a graphical keyboard. Gesturedetermination module 12 may receive an input from output device 6indicating that a displayed character of the graphical keyboard has beentouched, such as by a finger, stylus, pen, or the like. Gesturedetermination module 12 may determine that a tap gesture has beenperformed when the selected character has been released. As anotherexample, after receiving an input from output device 6 indicating that adisplayed character has been touched, gesture determination module 12may determine that a sliding gesture has been performed when theselected character is released by sliding the input device off theselected character while maintaining contact with output device 6.

In some example aspects, computing device 2 may operate according to atraining program mode. In the training program mode, training module 14may execute a training program of training programs 30 to provide ablock of training text to output device 6 for display to the user.Training module 14 may, for example, run a training program 30 uponinitial use of the graphical keyboard by a user of computing device 2.Training programs 30 can include a variety of sample training texts. Thetraining texts may provide a series of characters, including letters,numbers, and other symbols that correspond to characters on graphicalkeyboard 10. The training texts may be selected to ensure that eachcharacter occurs at least once, or multiple times. The training textsmay be selected to include common words, common character combinations,and/or a variety of different character combinations, for example.

Gesture determination module 12 registers key presses on thetouch-sensitive display by the user, and may determine a touch regionassociated with each key press. Gesture determination module 12 maydetermine a touch region associated with a portion of a touch-sensitivedisplay (e.g., output device 6) that is in contact with an input unit,such as a finger, stylus, or other input unit. In some examples, outputdevice 6 may indicate a radius of a contact area between the input unitand output device 6. For instance, the contact area may be an area ofthe touch-sensitive display where a detected capacitance of thetouch-sensitive display changes responsive to a surface area of theinput unit (e.g., a finger). In such examples, gesture determinationmodule 12 may determine the touch region of the portion of output device6 that is in contact with the input unit using the radius indicated byoutput device 6. In certain examples, output device 6 may indicate anumber of pixels or other units of known area of output device 6 thatare in contact with the input unit. Gesture determination module 12 maydetermine a center of the portion of output device 6 that is in contactwith the input unit, such as by extrapolating based on the number ofunits of known area.

In some examples, gesture determination module 12 may indicate thatmultiple gestures are being performed at once. For instance, a user mayprovide user inputs that include touching and releasing multipledisplayed characters at the same time. In such examples, gesturedetermination module 12 may track the multiple gestures individually,and keyboard customization module 18 may make a determination for eachindividual gesture.

Keyboard customization module 18 determines that each user input isassociated with a key, i.e., that the user input is intended for contactwith a representation of the key on the graphical keyboard. As describedin further detail below, keyboard customization module 18 may comparethe touch regions with expected target regions associated with therepresentation of the key on the display, to determine whether a giventouch region and the associated target region are substantially aligned.

In the example of a training program mode, keyboard customization module18 obtains the expected target regions from training module 14 and keyregions 32. Key regions 32 may store data specifying boundaries of thetarget regions on the graphical keyboard. Keyboard customization module18 can determine which key the user was supposed to press, and obtains akey boundary of this key from key regions 32. For example, an expectedorder of key characters of the training text may be known by keyboardcustomization module 18 from training module 14, and keyboardcustomization module 18 can compare this with an order and identity ofuser inputs registered by gesture determination module 12. Keyboardcustomization module 18 is configured to identify extraneous typingmistakes that are unrelated to misdirected key presses, such as spellingerrors or displaced fingers. For example, keyboard customization module18 may note that a misdirected key press may be located very close to anintended key, while a key press associated with a spelling error may belocated farther from an intended key. As another example, keyboardcustomization module 18 may recognize and correct for errors due todisplacement of the user's fingers on the graphical keyboard, such asmay occur when the user's fingers have drifted slightly from theoriginal positioning without the user's knowledge. Keyboardcustomization module 18 may ignore the extraneous typing mistakes orfinger displacement when comparing touch regions with expected targetregions of the graphical keyboard.

In some example aspects, keyboard customization module 18 of computingdevice 2 may operate in a continuous learning mode for determiningwhether modifications to a graphical keyboard might be proposed for auser. Computing device 2 may operate according to the continuouslearning mode alternatively or additionally to a training program modesuch as that described above. In the continuous learning mode, keyboardcustomization module 18 may execute as a background task while the usermakes use of computing device 2. For example, a user may make use of oneor more other application(s) 19 executing on operating system 16 ofcomputing device 2, where the other applications 19 are applicationsother than keyboard application 8. Keyboard customization module 18 maygather data based on the user's inputs to computing device 2 usinggraphical keyboard 10, and may, for example, store the gathered data attouch data 36 of storage device(s) 26. As one example, while a usertypes using graphical keyboard 10 using an email application ofapplications 19, keyboard customization module 18 may operate in thecontinuous learning mode to record data associated with user inputsduring use of the email application and calculate touch regionsassociated with the user inputs.

Keyboard customization module 18 may identify a target region associatedwith each touch region. In other words, for each user input, keyboardcustomization module 18 may identify which key was intended to bepressed by the user input, and then identifies a corresponding targetregion for the key intended to be pressed. For example, a target regionmay coincide with a boundary of the representation of the intended key.Keyboard customization module 18 may identify which key was intended tobe pressed by the user input, and thus the corresponding target regions,based on user typing self-corrections, such as when a user deletes andretypes some text, selection of an auto-correct suggestion, and/or otheruser typing corrections, for example. That is, keyboard customizationmodule 18 may identify what key character(s) the user has selected toreplace what was originally typed by the user.

Keyboard customization module 18 may determine whether a touch regioncorresponding to a given user input is substantially aligned with anassociated target region of the graphical keyboard, and keyboardcustomization module 18 identifies instances in which the touch regionsdo not substantially align with the corresponding expected key region32. For example, keyboard customization module 18 may compare a centerof a touch region to a center of a corresponding target region. Keyboardcustomization module 18 may determine that the touch regionsubstantially aligns with the corresponding target region when, forexample, the centers of the touch region and the target region arewithin a certain configured distance from one another. In some examples,even though some or all of a touch region lies within a boundary of therepresentation of the key, if a center of the touch region is too closeto an edge of the key boundary, it may be determined not to besubstantially aligned. In some example aspects, keyboard customizationmodule 18 may build a cumulative record of user touches in touch data 36for each user, and may determine whether a distribution of thecumulative user touches is substantially aligned with the target region.In other examples, keyboard customization module 18 may determine thatthe touch region does not substantially align with the correspondingtarget region when greater than a threshold quantity of surface area ofthe touch region is positioned outside of the target region.

Based on user touch data 36 and/or thresholds 34, keyboard customizationmodule 18 may determine that one or more parameters of graphicalkeyboard could be modified to improve the user experience. Keyboardcustomization module 18 may, for example, propose to modify one or moreattributes such as a shape, size, and relative position of keys on thegraphical keyboard. As another example, keyboard customization module 18may propose to modify an attribute such as an overall layout of thegraphical keyboard, including modifying the size of the entire graphicalkeyboard. For example, keyboard customization module 18 may increase anoverall size of the graphical keyboard, such as by increasing a size ofone or more keys of the graphical keyboard.

When keyboard customization module 18 determines that one or moreparameters of the graphical keyboard should be modified, keyboardcustomization module 18 may suggest proposed modifications to thegraphical keyboard to the user, such as by showing proposedmodifications on a display of output device 6. Keyboard customizationmodule 18 may, for example, occasionally present a display to the userthat shows a new proposed graphical keyboard layout. Keyboardcustomization module 18 may simultaneously display both a current layoutof the graphical keyboard and a proposed modified layout of thegraphical keyboard on a single display.

In some examples, keyboard customization module 18 may give the user anoption to elect to use the new graphical keyboard layout or stay withthe current layout. Keyboard customization module 18 may also providethe user an option to accept the key layout changes on a key-by-keybasis. In some examples, keyboard customization module 18 mayautomatically change the layout of the graphical keyboard withoutrequesting user approval. The user may be able to turn the continuouskeyboard learning mode on or off, e.g., via a user menu presented bycomputing device 2. The user may also be able to defer participation ina keyboard customization training program.

When multiple different users make use of computing device 2 and have,for example, different user names and associated profiles on computingdevice 2, training module 14 may run one or more training programs 30for each user. Keyboard customization module 18 may create differentcustomized graphical keyboards for each user. Keyboard customizationmodule 18 may store data associated with the different customizedgraphical keyboards to user settings 28. For example, keyboardcustomization module 18 may store data to user settings 28 indicatingthe mapping between users and respective customized graphical keyboardlayouts. User settings 28 can include a variety of user settings foreach user, in addition to settings related to the customized graphicalkeyboards.

In one example, keyboard customization module 18 may suggest enlargingan overall size of the graphical keyboard 10 based on comparisons oftouch regions and target regions. For example, if touch data 36collected based on the user's typing indicates that the user oftentouches locations beyond a boundary of the current graphical keyboard,then keyboard customization module 18 may propose to enlarge the overallsize of the graphical keyboard 10.

FIG. 3 is a conceptual diagram illustrating an example of a keyboardapplication. For purposes of illustration, the example keyboardapplication is described below in the context of computing device 2 ofFIG. 1 and FIG. 2. Keyboard application 8, executing on one or moreprocessors 20, may provide one or more signals to cause atouch-sensitive display, such as output device 6, to display graphicalkeyboard 40. As illustrated in FIG. 3, a user may perform a gesture,such as a tap gesture, at a location of the touch-sensitive display(e.g., output device 6) that displays one or more of the characters ofthe graphical keyboard. A tap gesture may be defined as touching thetouch-sensitive display at one or more of the displayed characters withan input unit (a finger, in the illustrated example) and releasing thecharacter by removing the input unit from the touch-sensitive display.In certain examples, a user may perform a sliding gesture (notillustrated), such as by releasing the character by removing the inputunit from the selected character while maintaining contact between theinput unit and the touch-sensitive display.

In the illustrated example of FIG. 3, a tap gesture begins with gesture42, where a user begins to initiate touching graphical keyboard 40 atthe displayed character “k”. At gesture 44, the user has made contactwith the displayed letter “k” of graphical keyboard 40. Gesturedetermination module 12 may determine that a gesture, such as theillustrated tap gesture, has begun when output device 6 provides one ormore signals indicating that an input device has made contact with thetouch-sensitive display. In certain examples, as when output device 6includes a presence-sensitive display, gesture determination module 12may determine that a gesture has begun when output device 6 provides oneor more signals indicating that an input device has come into adetectable range of the presence-sensitive device.

At gesture 46, a user has released the displayed character “k” byremoving his or her finger from the touch-sensitive display. Gesturedetermination module 12 may determine that a tap gesture has beenperformed because the input unit (a finger in the illustrated example)was removed from the selected character by removing the input unit fromthe touch-sensitive display.

Upon determining that a tap gesture has been performed, gesturedetermination module 12 may determine the touch region of the portion ofoutput device 6 that is in contact with the input unit, such as by usingposition data and a radius of a touch region indicated by output device6. Gesture determination module 12 may store user touch data, such asthe position of a tap gesture on the graphical keyboard, a key characterassociated with the position, and a radius of the touch regionassociated with the tap gesture, to touch data 36.

FIGS. 4A-4D are block diagrams illustrating example portions of agraphical keyboard. FIG. 4A includes three target regions 50A-50C(“target regions 50”). In the example of FIG. 4A, target region 50A isassociated with a representation of the “H” key, target region 50B isassociated with a representation of the “J” key, and target region 50Cis associated with a representation of the “N” key. FIG. 4A alsoincludes a touch region 52 associated with the representation of the key“H.” In this example, target regions 50 are co-extensive with outerboundaries of a representation of the respective keys on the graphicalkeyboard. In other examples, target regions 50 may not be co-extensivewith the outer boundaries of the representations of the keys. Forexample, a target region 50 may consist of a different region associatedwith the respective key, such as by delineating an inner region of arepresentation of a key.

In some aspects, touch region 52 may be determined by gesturedetermination module 12 based on a single user input, or may bedetermined by keyboard customization module 18 based on multiple userinputs, such as based on a set of user inputs like those represented bythe distribution of graph 60 of FIG. 5. In an example in which a targetregion 50 corresponds to a single user input, keyboard customizationmodule 18 may determine that the touch region 52 is associated withtarget region 50A, in the sense that keyboard customization module 18determines that a user is expected to have typed “H” when the user inputassociated with touch region 52 occurred. Keyboard customization module18 may determine the association based on data from a training program30, or other method.

In the example of FIG. 4A, keyboard customization module 18 maydetermine that touch region 52 is substantially aligned with targetregion 50A. For example, keyboard customization module 18 may determinethat a center of target region 52 is within a threshold distance of acenter of target region 50A. In the example of FIG. 4B, keyboardcustomization module 18 may likewise determine that touch region 54 isassociated with target region 50A. Gesture determination module 12 maycompute a radius 55 of touch region 54, and may use the radius 55 todetermine the touch region 54.

Keyboard customization module 18 may determine that the touch regionsubstantially aligns with the corresponding target region when, forexample, the centers of the touch region and the target region arewithin a certain configured distance from one another. In some examples,even though some or all of a touch region lies within a boundary of therepresentation of the key, if a center of the touch region is too closeto an edge of the key boundary, keyboard customization module 18 maydetermine that the touch region is not substantially aligned with thetarget region. FIG. 4C illustrates one such example. In the example ofFIG. 4C, keyboard customization module 18 may determine that touchregion 56 is not substantially aligned with target region 50A because acenter 57 of touch region 56 is greater than a threshold distance awayfrom a center 59 of the target region 50A. FIG. 4D may be anotherexample in which a touch region 58 is found not to be substantiallyaligned with a target region 50A associated with the representation ofthe key corresponding to the character of “H.”

FIG. 5 is a conceptual diagram illustrating an example distribution ofuser inputs associated with a representation of a key on a graphicalkeyboard. FIG. 5 illustrates a portion 61 of a graphical keyboard thatincludes representations keys 63A-63C. Key 63A is a representation ofthe “H” key, key 63B is associated with a representation of the “J” key,and key 63C is associated with a representation of the “N” key. In theexample of FIG. 5, three-dimensional graph 60 includes an x-axis 62 thatrepresents a position along a first dimension in the plane of thegraphical keyboard 10, and a y-axis 64 that represents a position alonga second dimension in the plane of the graphical keyboard 10.Three-dimensional graph 60 further includes a z-axis 66 that representsa cumulative quantity N of touches that have occurred at a givenposition of a key on the graphical keyboard. Keyboard customizationmodule 18 may maintain distribution data 36, which may include data suchas that represented by three-dimensional graph 60 for each keyrepresented on the graphical keyboard for each user (e.g., the keyassociated with the letter “H”).

The example of FIG. 5 includes a key boundary 68 that indicates aposition on the graphical keyboard associated with a particular key, forexample, the key associated with the letter “H.” FIG. 5 also includes atarget region 72 associated with the representation of the key “H.” Inthe example of FIG. 5, target region 72 is not coextensive with the keyboundary 68, but represents an inner region having less surface areathan a region encompassed by key boundary 68.

When a user touch is registered by gesture determination module 12 asbeing associated with a particular (x, y) position in the plane of thegraphical keyboard 10, keyboard customization module 18 may log recordthe instance of the touch, such as by incrementing a counter associatedwith that (x, y) position. A cumulative quantity of touches up to agiven point of time at each (x, y) position within the key boundary forthe key “H” is illustrated by three-dimensional graph 60. Keyboardcustomization module 18 may not record those touches that are determinedto be actual typing errors (e.g., spelling mistakes), but instead mayonly record those touches that are determined to be attempts to type atthe representation of the key for “H.”

Computing device 2 may be configured with a threshold 70 that specifiesa threshold quantity of touches. If the (x, y) position within keyboundary 68 that is most touched by the user when the user is attemptingto touch the key for “H” is too close to an edge of key boundary 68,then keyboard customization module 18 may determine to modify thelocation, shape, or other parameter or characteristic of the key tobetter suit the typing habits of the user.

Keyboard customization module 18 may initiate modification of one ormore parameters of the graphical keyboard upon determining that a touchregion associated with the key “H” is not substantially aligned with thetarget region 72 associated with the key “H.” For example, keyboardcustomization module 18 may initiate modification of the graphicalkeyboard when a most touched position associated with the key “H” islocated outside of a configured inner region 72 of the key. The mosttouched position is represented by a maximum 74 of the distributionrepresented in three-dimensional graph 60. In some aspects, keyboardcustomization module 18 may be configured not to modify the graphicalkeyboard when only a few touches have occurred outside the inner region72, but may instead modify the graphical keyboard only when the quantityof touches at a position outside the target region 72 exceeds athreshold quantity of touches 70. Sensitivity of keyboard customizationmodule 18 may be configured by adjusting settings for threshold 70and/or target region 72.

Alternatively or additionally, as described above, keyboardcustomization module 18 may initiate modification of the graphicalkeyboard when a center of a touch region is located greater than aconfigured distance from a center of the target region 72, where thetouch region may be determined based on cumulative user inputsrepresented by graph 60. Keyboard customization module 18 may user othertechniques for determining whether a touch region is substantiallyaligned with the corresponding target region. In response to determiningthat a touch region is not substantially aligned with the correspondingtarget region, keyboard customization module 18 may propose to modifythe location, shape, or other parameter or characteristic of the key tobetter suit the typing habits of the user. In this manner, keyboardcustomization module 18 may help to improve the quality of the user'sexperience when using the graphical keyboard, such as by reducing anamount of errors and corrections made by the user.

FIG. 6 is a flow diagram illustrating an example process of a computingdevice or computing system (e.g., computing device 2 of FIGS. 1-2) thatis configured to execute a keyboard application. In the example of FIG.6, a computing device having an input-sensitive display operates byoutputting a first graphical keyboard arrangement including a firstrepresentation of a key that is associated with a target region of theinput-sensitive display (80). The operation includes receiving aplurality of user inputs at the input-sensitive display, each user inputfrom the plurality of user inputs being associated with a respectivetouch region of the input-sensitive display (82). Responsive todetermining that each input from the plurality of user inputs isassociated with the first representation of the key, the operationincludes determining whether one or more of the associated touch regionsis not substantially aligned with the target region associated with thefirst representation of the key (84). The operation includes identifyinga quantity of the touch regions that are not substantially aligned withthe target region (86), and, subsequent to determining that the quantityexceeds a threshold quantity of touch regions that are not substantiallyaligned with the target region, outputting, at the input-sensitivedisplay, a second graphical keyboard arrangement that includes a secondrepresentation of the key, wherein at least one attribute of the secondrepresentation of the key is graphically modified relative to the firstrepresentation of the key so as to substantially align one or more ofthe touch regions with a target region associated with the secondrepresentation of the key (88).

In one example, the process can further include receiving the pluralityof user inputs in response to a training program presented by thecomputing device that prompts a user to type a predefined series ofcharacters using the first graphical keyboard arrangement, anddetermining that each user input from the plurality of user inputs isassociated with the first representation of the key based on acomparison of an order of the user inputs with an order of thepredefined series of characters presented by the training program.Alternatively or additionally, the process can include executing akeyboard customization application as a background task of the computingdevice, and receiving the plurality of user inputs during use by a userof an application executing on the computing device other than thekeyboard customization application. In some examples, the process caninclude determining, for example, that each user input from theplurality of user inputs is associated with the first representation ofthe key at least in part based on typing corrections received from theuser. The process can include outputting, at the input-sensitive displayof the computing device, an indication of an option to cease executionof the keyboard customization application as a background task.

Alternatively or additionally, in some examples the process can includeoutputting, at the input-sensitive display of the computing device, thefirst graphical keyboard arrangement and the second graphical keyboardat the same time, and soliciting a user selection of one of the firstgraphical keyboard arrangement and the second graphical keyboard forfuture use, and/or soliciting a user selection of one or moremodifications of attributes of one or more representations of keys ofthe first graphical keyboard arrangement for future use. The process caninclude associating the second graphical keyboard arrangement with aprofile of a user of the computing device. The process can also includemodifying one or more attributes of the second representation of the keyto graphically modify relative to the first representation of the key,such as a shape, a size, a position, or other attribute.

In some examples, the process can include determining that one or moreof the associated touch regions is not substantially aligned with thetarget region associated with the first representation of the key basedat least on determining that a center of the touch region is positionedgreater than a threshold distance away from a center of the targetregion. In some examples, the process can include determining that oneor more of the associated touch regions is not substantially alignedwith the target region associated with the first representation of thekey based at least on determining that greater than a threshold quantityof surface area of the touch region is positioned outside of the targetregion.

Techniques described herein may be implemented, at least in part, inhardware, software, firmware, or any combination thereof. For example,various aspects of the described embodiments may be implemented withinone or more processors, including one or more microprocessors, digitalsignal processors (DSPs), application specific integrated circuits(ASICs), field programmable gate arrays (FPGAs), or any other equivalentintegrated or discrete logic circuitry, as well as any combinations ofsuch components. The term “processor” or “processing circuitry” maygenerally refer to any of the foregoing logic circuitry, alone or incombination with other logic circuitry, or any other equivalentcircuitry. A control unit including hardware may also perform one ormore of the techniques of this disclosure.

Such hardware, software, and firmware may be implemented within the samedevice or within separate devices to support the various techniquesdescribed herein. In addition, any of the described units, modules orcomponents may be implemented together or separately as discrete butinteroperable logic devices. Depiction of different features as modulesor units is intended to highlight different functional aspects and doesnot necessarily imply that such modules or units are realized byseparate hardware, firmware, or software components. Rather,functionality associated with one or more modules or units may beperformed by separate hardware, firmware, or software components, orintegrated within common or separate hardware, firmware, or softwarecomponents.

Techniques described herein may also be embodied or encoded in anarticle of manufacture including a computer-readable storage mediumencoded with instructions. Instructions embedded or encoded in anarticle of manufacture including an encoded computer-readable storagemedium, may cause one or more programmable processors, or otherprocessors, of a computing system to implement one or more of thetechniques described herein, such as when instructions included orencoded in the computer-readable storage medium are executed by the oneor more processors. Computer readable storage media may include randomaccess memory (RAM), read only memory (ROM), programmable read onlymemory (PROM), erasable programmable read only memory (EPROM),electronically erasable programmable read only memory (EEPROM), flashmemory, a hard disk, a compact disc ROM (CD-ROM), a floppy disk, acassette, magnetic media, optical media, or other computer readablemedia. In some examples, an article of manufacture may comprise one ormore computer-readable storage media.

In some examples, computer-readable storage media may comprisenon-transitory media. The term “non-transitory” may indicate that thestorage medium is tangible and is not embodied in a carrier wave or apropagated signal. In certain examples, a non-transitory storage mediummay store data that can, over time, change (e.g., in RAM or cache).

Various examples have been described. These and other examples arewithin the scope of the following claims.

1. A method comprising: outputting, by a computing device and fordisplay at an input-sensitive display, a first graphical keyboardarrangement including a first representation of a key, wherein a targetregion of the input-sensitive display corresponds to the firstrepresentation of the key; receiving, by the computing device, dataindicative of a plurality of tap gestures received at theinput-sensitive display, each respective tap gesture from the pluralityof tap gestures detected at a respective location of the input-sensitivedisplay; determining, by the computing device and based at least in parton one or more of the plurality of tap gestures, that each tap gesturefrom the plurality of tap gestures corresponds to the key; responsive todetermining that each tap gesture corresponds to the key, identifying,by the computing device, a quantity of the tap gestures detected atlocations that are not substantially aligned with the target regioncorresponding to the first representation of the key; and responsive todetermining that the quantity exceeds a threshold quantity of tapgestures detected at locations that are not substantially aligned withthe target region, outputting, by the computing device and for displayat the input-sensitive display, a second graphical keyboard arrangementthat includes a second representation of the key, wherein at least oneattribute of the second representation of the key is graphicallymodified relative to the first representation of the key so as tosubstantially align a target region corresponding to the secondrepresentation of the key with one or more of the locations at which thetap gestures were detected.
 2. The method of claim 1, wherein theplurality of tap gestures are received at the input-sensitive display inresponse to a training program presented by the computing device thatprompts a user to type a predefined series of characters using the firstgraphical keyboard arrangement, and wherein determining that each tapgesture from the plurality of tap gestures corresponds to the key isbased at least in part on a comparison of an order of the plurality oftap gestures with an order of the predefined series of characterspresented by the training program.
 3. The method of claim 1, furthercomprising: executing a keyboard customization application as abackground task of the computing device, wherein the data indicative ofthe plurality of tap gestures at the input-sensitive display is receivedduring execution of an application by the computing device other thanthe keyboard customization application.
 4. The method of claim 3,further comprising: determining, by the keyboard customizationapplication, that each tap gesture from the plurality of tap gesturescorresponds to the key at least in part based on typing correctionsreceived from the user.
 5. The method of claim 3, further comprising:outputting, by the computing device and for display at theinput-sensitive display, an indication of an option to cease executionof the keyboard customization application as the background task.
 6. Themethod of claim 1, further comprising: outputting, by the computingdevice and for display at the input-sensitive display, the firstgraphical keyboard arrangement and the second graphical keyboard at thesame time; and soliciting a user selection of one of the first graphicalkeyboard arrangement and the second graphical keyboard for future use.7. The method of claim 1, further comprising: outputting, by thecomputing device and for display at the input-sensitive display, boththe first graphical keyboard arrangement and the second graphicalkeyboard at the same time; and soliciting a user selection of one ormore modifications of attributes of one or more representations of keysof the first graphical keyboard arrangement for future use.
 8. Themethod of claim 1, further comprising: associating the second graphicalkeyboard arrangement with a profile of a user of the computing device.9. The method of claim 1, further comprising: selecting the at least oneattribute of the second representation of the key to graphically modifyrelative to the first representation of the key, wherein the selectedattribute comprises a shape of the second representation of the key. 10.The method of claim 1, further comprising: selecting the at least oneattribute of the second representation of the key to graphically modifyrelative to the first representation of the key, wherein the selectedattribute comprises a size of the second representation of the key. 11.The method of claim 1, further comprising: selecting the at least oneattribute of the second representation of the key to graphically modifyrelative to the first representation of the key, wherein the selectedattribute comprises a position of the second representation of the keyin the graphical keyboard.
 12. The method of claim 1, wherein the firstgraphical keyboard arrangement includes a plurality of representationsof a plurality of respective keys, wherein the second graphical keyboardarrangement comprises a second plurality of representations ofrespective keys, wherein the second graphical keyboard arrangement has adifferent overall size and shape than the first graphical keyboardarrangement, and wherein the overall size and shape of the secondgraphical keyboard arrangement is selected so as to substantially aligna target region corresponding to the second representation of the keywith one or more of the locations at which the tap gestures weredetected.
 13. The method of claim 1, wherein the input-sensitive displaycomprises a presence-sensitive display of the computing device thatregisters each of the plurality of tap gestures at least in part basedon presence of an input unit without requiring physical contact betweenthe input unit and the presence-sensitive display.
 14. The method ofclaim 1, wherein the input-sensitive display comprises a touch-sensitivedisplay of the computing device, wherein the plurality of tap gesturescomprise a plurality of user touches of the touch-sensitive display. 15.The method of claim 1, further comprising determining that one or moreof the tap gestures is detected at a location that is not substantiallyaligned with the target region corresponding to the first representationof the key based at least in part on determining that a center of thelocation at which the tap gesture is detected is positioned greater thana threshold distance away from a center of the target regioncorresponding to the first representation of the key.
 16. The method ofclaim 1, further comprising determining that one or more of the tapgestures is detected at a location that is not substantially alignedwith the target region corresponding to the first representation of thekey based at least in part on determining that greater than a thresholdquantity of surface area of the location at which the tap gesture isdetected is positioned outside of the target region corresponding to thefirst representation of the key.
 17. A system comprising: at least oneprocessor; a keyboard application operable by the at least one processorto generate graphical keyboard arrangements; and an input-sensitivedisplay that outputs, for display, a first graphical keyboardarrangement including a first representation of a key, wherein a targetregion of the input-sensitive display corresponds to the firstrepresentation of the key, wherein the input-sensitive display isconfigured to receive data indicative of a plurality of respective tapgestures each detected at a respective location of the input-sensitivedisplay, wherein the data indicative of the plurality of tap gesturesare received during use by a user of an application executing on thesystem other than the keyboard application, wherein the keyboardapplication determines, based at least in part on one or more of theplurality of tap gestures, that each user input from the plurality oftap gestures corresponds to the key, wherein the keyboard application,responsive to determining that each tap gesture corresponds to the key,identifies a quantity of tap gestures detected at locations that are notsubstantially aligned with the target region corresponding to the firstrepresentation of the key, and wherein the input-sensitive displayoutputs a second graphical keyboard arrangement that includes a secondrepresentation of the key, wherein at least one attribute of the secondrepresentation of the key is graphically modified relative to the firstrepresentation of the key so as to substantially align a target regioncorresponding to the second representation of the key with one or moreof the locations at which the tap gestures were detected.
 18. The systemof claim 17, wherein the keyboard application generates the secondgraphical keyboard arrangement responsive to determining that thequantity exceeds a threshold quantity of tap gestures detected atlocations that are not substantially aligned with the target region. 19.A computer-readable storage medium comprising instructions that, ifexecuted by one or more processors of a computing system, cause thecomputing system to perform operations comprising: outputting a firstgraphical keyboard arrangement for display at an input-sensitivedisplay, the first graphical keyboard arrangement including a firstrepresentation of a key, wherein a target region of the input-sensitivedisplay corresponds to the first representation of the key; receivingdata indicative of a plurality of tap gestures, each respective tapgesture from the plurality of tap gestures detected at a respectivelocation of the input-sensitive display; determining, based at least inpart on one or more of the plurality of tap gestures, that each tapgesture from the plurality of tap gestures corresponds to the key;responsive to determining that each tap gesture corresponds to the key,identifying a quantity of tap gestures detected at locations that arenot substantially aligned with the target region corresponding to thefirst representation of the key; and responsive to determining that oneor more of the tap gestures detected at locations is not substantiallyaligned with the target region associated with the first representationof the key, outputting for display at the input-sensitive display asecond graphical keyboard arrangement that includes a secondrepresentation of the key, wherein at least one attribute of the secondrepresentation of the key is graphically modified relative to the firstrepresentation of the key so as to substantially align a target regioncorresponding to the second representation of the key with one or moreof the locations at which the tap gestures were detected.
 20. Thecomputer-readable storage medium of claim 19, wherein receiving the dataindicative of the plurality of tap gestures comprises receiving dataindicative of a plurality of tap gestures received in response to atraining program presented by a computing device that prompts a user totype a predefined series of characters using the first graphicalkeyboard arrangement, wherein determining that each tap gesture from theplurality of tap gestures corresponds to the key comprises determiningat least in part based on a comparison of an order of the tap gestureswith an order of the predefined series of characters presented by thetraining program.
 21. The method of claim 1, wherein determining thateach tap gesture from the plurality of tap gestures corresponds to thekey comprising determining that each respective location is located atleast partially within the target region corresponding to the firstrepresentation of the key.